/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.isd.promocion.modelo;

import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.isd.inventario.modelo.Producto;

/**
 *
 * @author Claudio
 */
@Entity
@Table(name = "USR_TVPROI")
@IdClass(ItemPromocionPK.class)
public class ItemPromocion implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "USR_TVPROI_TVPROH_NROPRO", nullable = false)
    private Integer nroPromocion;
    
    @Id
    @Basic(optional = false)
    @Column(name = "USR_TVPROI_NORDEN", nullable = false)
    private Integer orden;

    @Column(name = "USR_TVPROI_DESCRP", length = 255)
    private String descripcion;

    @JoinColumns({
        @JoinColumn(name = "USR_TVPROI_TIPPRO", referencedColumnName = "STMPDH_TIPPRO", nullable = false, insertable=true, updatable=true),
        @JoinColumn(name = "USR_TVPROI_ARTCOD", referencedColumnName = "STMPDH_ARTCOD", nullable = false, insertable=true, updatable=true)
    })
    @ManyToOne(optional=false)
    private Producto producto;

    @ManyToOne
    @JoinColumn(name = "USR_TVPROI_TVPROH_NROPRO", referencedColumnName = "USR_TVPROH_NROPRO", nullable = false, insertable=false, updatable=false)
    private Promocion promocion;

    @Column(name = "USR_TVPROI_CNTMIN", precision = 18, scale = 4)
    private BigDecimal cantidadMinima;
    @Column(name = "USR_TVPROI_CNTMAX", precision = 18, scale = 4)
    private BigDecimal cantidadMaxima;
    @Column(name = "USR_TVPROI_PRCPRO", precision = 20, scale = 6)
    private BigDecimal precioPromocion;
    @Column(name = "USR_TVPROI_PRCNOR", precision = 20, scale = 6)
    private BigDecimal precioNormal;
    
    @Column(name = "USR_TV_DEBAJA")
    private Character debaja;
    

    public ItemPromocion() {
    }

    public ItemPromocion(Integer usrTvproiTvprohNropro) {
        this.nroPromocion = nroPromocion;
    }

    public Promocion getPromocion() {
        return promocion;
    }

    public void setPromocion(Promocion promocion) {
        this.promocion = promocion;
    }

    public BigDecimal getCantidadMaxima() {
        return cantidadMaxima;
    }

    public void setCantidadMaxima(BigDecimal cantidadMaxima) {
        this.cantidadMaxima = cantidadMaxima;
    }

    public BigDecimal getCantidadMinima() {
        return cantidadMinima;
    }

    public void setCantidadMinima(BigDecimal cantidadMinima) {
        this.cantidadMinima = cantidadMinima;
    }

    public Character getDebaja() {
        return debaja;
    }

    public void setDebaja(Character debaja) {
        this.debaja = debaja;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Integer getNroPromocion() {
        return nroPromocion;
    }

    public void setNroPromocion(Integer nroPromocion) {
        this.nroPromocion = nroPromocion;
    }

    public BigDecimal getPrecioNormal() {
        return precioNormal;
    }

    public void setPrecioNormal(BigDecimal precioNormal) {
        this.precioNormal = precioNormal;
    }

    public BigDecimal getPrecioPromocion() {
        return precioPromocion;
    }

    public void setPrecioPromocion(BigDecimal precioPromocion) {
        this.precioPromocion = precioPromocion;
    }

    public Producto getProducto() {
        return producto;
    }

    public void setProducto(Producto producto) {
        this.producto = producto;
    }

    public Integer getOrden() {
        return orden;
    }

    public void setOrden(Integer orden) {
        this.orden = orden;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final ItemPromocion other = (ItemPromocion) obj;
        if (this.nroPromocion != other.nroPromocion && (this.nroPromocion == null || !this.nroPromocion.equals(other.nroPromocion))) {
            return false;
        }
        if (this.orden != other.orden && (this.orden == null || !this.orden.equals(other.orden))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 43 * hash + (this.nroPromocion != null ? this.nroPromocion.hashCode() : 0);
        hash = 43 * hash + (this.orden != null ? this.orden.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "ItemPromocion{" + "nroPromocion=" + nroPromocion + "orden=" + orden + '}';
    }

}
